MirageOS est un outil permettant de créer un unikernel (un système d’exploitation) pouvant faire office de micro-service comme un site Internet, un service SMTP ou encore un service DNS. L’objectif de MirageOS est de proposer une solution modulaire afin que l’utilisateur puisse créer son propre système selon ce qu’il souhaite vraiment. La modularité et l’approche clean-state de MirageOS permet de délester le système final d’éléments superficiels à priori. De ce fait, MirageOS est capable de produire un système d’exploitation complet comme un simple site internet ne pesant au final que ~16 Mo.
L’approche de MirageOS est de reconstruire tous les éléments de votre application finale en OCaml (en partant de votre API REST à la pile TCP/IP). Les logiques d’abstraction et la modularité d’OCaml sont les bases de MirageOS afin de s’abstraire de tout ce qui est à proprement parler lié au système (les syscalls) et de pouvoir interchanger une implémentation avec une autre sans changer le reste de l’application. Par ces mécanismes-là, MirageOS a la possibilité de produire un simple exécutable ou de produire un système complet capable d’être virtualisé avec Xen ou KVM.
Dans cette dépêche, nous allons voir ce qu’est concrètement MirageOS et expliquer comment l’utiliser.